package feri.pkg;

import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import feri.baza.DBHelper;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.TextView;
import android.widget.Toast;

public class OpisLokacijDogodkovActivity extends Activity {
	double x;
	double y;
	double dx;
	double dy;
	TextView razdaljatv;
	int kategorijaID;
	Context kontekst;
	String naziv;
	
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
			setContentView(R.layout.opislokacijdogodkov);
			
			kontekst=this;
			String vrsta = getIntent().getStringExtra("vrsta");
			naziv = getIntent().getStringExtra("naziv");
			TextView nazivtv = (TextView) findViewById(R.id.naziv);
			
			kategorijaID= getIntent().getIntExtra("kategorijaID",0);
			
			DBHelper db = new DBHelper(this);
			db.open();
			String kategorija = db.vrniKategorijoNaziv(kategorijaID);
			db.close();
			TextView kategorijatv = (TextView) findViewById(R.id.kategorija);
			kategorijatv.setText(kategorija);
			nazivtv.setText(naziv);
			
			razdaljatv = (TextView) findViewById(R.id.razdalja);
			
			
			
			LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
			LocationListener ll = new mojListener();
			lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll);
			 
			 if(x == 0.0){//vzamem zadnjo znano lokacijo, �e gps ne deluje
			
	        List<String> providers = lm.getProviders(true);
	       
	          Location l = null;
		        
		        for (int i=providers.size()-1; i>=0; i--) {
		                l = lm.getLastKnownLocation(providers.get(i));
		                if (l != null) break;
		        }
		        
		        if (l != null) {
		                x = l.getLatitude();
		                y = l.getLongitude();
		               // razdaljatv.setText("x: "+x+" y: "+y);
		        }
		       
			}
			
			Location lokacija = new Location("od");
			lokacija.setLatitude(x);
			lokacija.setLongitude(y);
			
			Location lokacijaDo = new Location("do");
			dx = getIntent().getDoubleExtra("x", 0);
			dy = getIntent().getDoubleExtra("y", 0);			
			
			lokacijaDo.setLatitude(dx);
			lokacijaDo.setLongitude(dy);
			
			double razdalja = lokacija.distanceTo(lokacijaDo);
			String izpis = "Razdalja "+ (int)razdalja+" metrov.";
			if(razdalja >1000){
				razdalja /= 1000;
				razdalja = roundTwoDecimals(razdalja);
				izpis = "Razdalja "+ razdalja+" km.";
			}
			razdaljatv.setText(izpis);
			
			
			TextView opistv = (TextView) findViewById(R.id.opis);
			String opis = getIntent().getStringExtra("opis");
			
			StringBuilder sb = new StringBuilder();
			String naslov = getIntent().getStringExtra("naslov");
			if(opis == null)
				opis = "";
			if(naslov != null)
				sb.append("Naslov: "+naslov+"\n");
			if(vrsta.equals("Dogodki")){
				String datum = getIntent().getStringExtra("datum");
				DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
				Date d = null;
				try {
					d = (Date) df.parse(datum);
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} 
				df = new SimpleDateFormat("dd.MM.yyyy");
				sb.append("Datum: "+df.format(d)+"\n\n"+opis);
			}else{
				if(naslov != null)
					sb.append("\n"+opis);
				else
					sb.append(opis);
			}
			opistv.setText(sb.toString());
	}
		
		public double roundTwoDecimals(double d) {
            DecimalFormat twoDForm = new DecimalFormat("#.##");
            return Double.valueOf(twoDForm.format(d));
        }	
		
	class mojListener implements LocationListener{

		public void onLocationChanged(Location location) {
			// TODO Auto-generated method stub
			if(location !=null){
				x=location.getLatitude();
				y=location.getLongitude();
				razdaljatv.setText("x: "+x);
				
				//ko se koordinate spremenijo spremenim razdaljo
				Location lokacija = new Location("od");
				lokacija.setLatitude(x);
				lokacija.setLongitude(y);
				
				Location lokacijaDo = new Location("do");
				dx = getIntent().getDoubleExtra("x", 0);
				dy = getIntent().getDoubleExtra("y", 0);			
				
				lokacijaDo.setLatitude(dx);
				lokacijaDo.setLongitude(dy);
								
				double razdalja = lokacija.distanceTo(lokacijaDo);
				String izpis = "Razdalja "+ (int)razdalja+" metrov.";
				if(razdalja >1000){
					razdalja /= 1000;
					razdalja = roundTwoDecimals(razdalja);
					izpis = "Razdalja "+ razdalja+" km.";
				}
				razdalja = roundTwoDecimals(razdalja);
				razdaljatv.setText(izpis);
			}
		}

		public void onProviderDisabled(String provider) {
			// TODO Auto-generated method stub
			
		}

		public void onProviderEnabled(String provider) {
			// TODO Auto-generated method stub
			
		}

		public void onStatusChanged(String provider, int status, Bundle extras) {
			// TODO Auto-generated method stub
			
		}
				
	}
	
}
